home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / GuiStatusBar.au3 < prev    next >
Text File  |  2006-08-01  |  27KB  |  562 lines

  1. ; Include Version:1.66 (17 July 2006)
  2. #include-once
  3. #include <Array.au3>
  4. #include <StatusBarConstants.au3>
  5. #include <WindowsConstants.au3>
  6. ; ------------------------------------------------------------------------------
  7. ;
  8. ; AutoIt Version: 3.1.1++
  9. ; Language:       English
  10. ; Description:    Functions that assist with the Statusbar control
  11. ;
  12. ; ------------------------------------------------------------------------------
  13. ;=== Globals
  14. Global $debug = True
  15. Global Const $LowOrder = 0xFFFF
  16. ;=== End Globals
  17.  
  18. ;=== function list
  19. ;===============================================================================
  20. ;_GUICtrlStatusBarCreate
  21. ;_GUICtrlStatusBarGetBorders
  22. ;_GUICtrlStatusBarGetIcon
  23. ;_GUICtrlStatusBarGetParts
  24. ;_GUICtrlStatusBarGetRect
  25. ;_GUICtrlStatusBarGetText
  26. ;_GUICtrlStatusBarGetTextLength
  27. ;_GUICtrlStatusBarGetTip
  28. ;_GUICtrlStatusBarGetUnicode
  29. ;_GUICtrlStatusBarResize
  30. ;_GUICtrlStatusBarSetBKColor
  31. ;_GUICtrlStatusBarSetIcon
  32. ;_GUICtrlStatusBarSetMinHeight
  33. ;_GUICtrlStatusBarSetSimple
  34. ;_GUICtrlStatusBarSetText
  35. ;_GUICtrlStatusBarSetTip
  36. ;_GUICtrlStatusBarSetUnicode
  37. ;**********Helper**************
  38. ;_GUICtrlStatusBarSetParts
  39. ;_CreateStructFromArray
  40. ;********** ToDo **************
  41. ;_GUICtrlStatusBarSetExtendedStyle
  42.  
  43. ;===============================================================================
  44. ;
  45. ; Description:       _GUICtrlStatusBarCreate
  46. ; Parameter(s):      $h_Gui            -    Handle to parent window
  47. ;                    $a_PanelWidth    -    width of panel or panels (for more than 1 panel pass in zero based array)
  48. ;                    $s_PanelText    -    text of panel or panels (for more than 1 panel pass in zero based array)
  49. ;                            $v_styles        -    styles to apply to the status bar (Optional) for multiple styles bitor them.
  50. ; Requirement:
  51. ; Return Value(s):   Returns hWhnd if successful, or 0 with error set to 1 otherwise.
  52. ; User CallTip:      _GUICtrlStatusBarCreate($h_Gui, $a_PanelWidth, $s_PanelText[, $v_styles = ""]) Creates Statusbar. (required: <GuiStatusBar.au3>)
  53. ; Author(s):         rysiora, JdeB, tonedef,
  54. ;                    gafrost (Gary Frost (custompcs at charter dot net)), Steve Podhajecki <gehossafats at netmdc dot com>
  55. ; Note(s):
  56. ;===============================================================================
  57. Func _GUICtrlStatusBarCreate($h_Gui, $a_PanelWidth, $s_PanelText, $v_styles = "")
  58.     Local $a_PW[1], $a_PT[1]
  59.     If Not IsArray($a_PanelWidth) Then
  60.         $a_PW[0] = $a_PanelWidth
  61.     Else
  62.         $a_PW = $a_PanelWidth
  63.     EndIf
  64.     If Not IsArray($a_PT) Then
  65.         $a_PT[0] = $s_PanelText
  66.     Else
  67.         $a_PT = $s_PanelText
  68.     EndIf
  69.     If Not IsHWnd($h_Gui) Then $h_Gui = HWnd($h_Gui)
  70.     Local $hwnd_Bar1, $x
  71.     Local $style = BitOR($WS_CHILD, $WS_VISIBLE)
  72.     If @NumParams = 4 Then $style = BitOR($style, $v_styles)
  73.     $hwnd_Bar1 = DllCall("comctl32.dll", "long", "CreateStatusWindow", "long", $style, "str", "", "hwnd", $h_Gui, "int", 0)
  74.     
  75.     If @error Then Return SetError(1,1,0)
  76.         _GUICtrlStatusBarSetParts($hwnd_Bar1[0], UBound($a_PW), $a_PW)
  77.         For $x = 0 To UBound($s_PanelText) - 1
  78.             _GUICtrlStatusBarSetText($hwnd_Bar1[0], $a_PT[$x], $x)
  79.         Next
  80.         
  81.         Return $hwnd_Bar1[0]
  82. EndFunc   ;==>_GUICtrlStatusBarCreate
  83.  
  84. ;===============================================================================
  85. ;
  86. ; Description:       _GUICtrlStatusBarGetBorders
  87. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  88. ; Requirement:
  89. ; Return Value(s):   Returns zero based array
  90. ;                       0 - width of the horizontal border
  91. ;                       1 - width of the vertical border
  92. ;                       2 - width of the border between rectangles
  93. ;                    or zero otherwise.
  94. ; User CallTip:      _GUICtrlStatusBarGetBorders($h_StatusBar) Gets width of the borders. (required: <GuiStatusBar.au3>)
  95. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  96. ; Note(s):
  97. ;===============================================================================
  98. Func _GUICtrlStatusBarGetBorders($h_StatusBar)
  99.     Local $borders = DllStructCreate("int;int;int")
  100.     If @error Then  Return SetError(@error,@error,0)
  101.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  102.     Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETBORDERS, "int", 0, "ptr", DllStructGetPtr($borders))
  103.     If (Not $a_ret[0]) Then
  104.         $borders = 0
  105.         Return SetError(-1,-1,0)
  106.     Else
  107.         Local $a_borders[3], $x
  108.         For $x = 0 To 2
  109.             $a_borders[$x] = DllStructGetData($borders, $x + 1)
  110.         Next
  111.         $borders = 0
  112.         Return $a_borders
  113.     EndIf
  114. EndFunc   ;==>_GUICtrlStatusBarGetBorders
  115.  
  116. ;===============================================================================
  117. ;
  118. ; Description:       _GUICtrlStatusBarGetIcon
  119. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  120. ;                    $i_Panel            -    The panel to hold the text
  121. ; Requirement:
  122. ; Return Value(s):   return hwnd or zero otherwise.
  123. ; User CallTip:      _GUICtrlStatusBarGetIcon($h_StatusBar[, $i_Panel=0]) Gets Statusbar panel Icon handle. (required: <GuiStatusBar.au3>)
  124. ; Author(s):         Steve Podhajecki <gehossafats at netmdc dotcom>, gafrost (Gary Frost (custompcs at charter dot net))
  125. ; Note(s):
  126. ;===============================================================================
  127. Func _GUICtrlStatusBarGetIcon($h_StatusBar, $i_Panel)
  128.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  129.     Local $ret = DllCall("user32.dll", "long", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETICON, "int", $i_Panel, "int", 0)
  130.     If IsArray($ret) Then Return $ret[0]
  131. EndFunc   ;==>_GUICtrlStatusBarGetIcon
  132.  
  133. ;===============================================================================
  134. ;
  135. ; Description:       _GUICtrlStatusBarGetParts
  136. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  137. ;
  138. ; Requirement:
  139. ; Return Value(s):   Returns the number of parts in the window, otherwise zero.
  140. ; User CallTip:      _GUICtrlStatusBarGetParts($h_StatusBar) Retrieves a count of the parts in a status window. (required: <GuiStatusBar.au3>)
  141. ; Author(s):         Steve Podhajecki <gehossafats at netmdc dot com>, gafrost (Gary Frost (custompcs at charter dot net))
  142. ;
  143. ; Note(s):
  144. ;===============================================================================
  145. Func _GUICtrlStatusBarGetParts($h_StatusBar)
  146.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  147.     Local $ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETPARTS, "int", 0, "int", 0)
  148.     If IsArray($ret) Then Return $ret[0]
  149. EndFunc   ;==>_GUICtrlStatusBarGetParts
  150.  
  151. ;===============================================================================
  152. ;
  153. ; Description:       _GUICtrlStatusBarGetRect
  154. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  155. ;                    $i_part         -    zero based index of panel to retrieve rectangle from
  156. ; Requirement:
  157. ; Return Value(s):   Returns zero based array
  158. ;                       0 - Left
  159. ;                       1 - Top
  160. ;                       2 - Right
  161. ;                       3 - Bottom
  162. ;                    zero otherwise.
  163. ; User CallTip:      _GUICtrlStatusBarGetRect($StatusBar, $i_part) Retrieves the bounding rectangle of a part in a status window. (required: <GuiStatusBar.au3>)
  164. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  165. ; Note(s):
  166. ;===============================================================================
  167. Func _GUICtrlStatusBarGetRect($h_StatusBar, $i_part)
  168. ;~     typedef struct _RECT {
  169. ;~       LONG left;
  170. ;~       LONG top;
  171. ;~       LONG right;
  172. ;~       LONG bottom;
  173. ;~     } RECT, *PRECT;
  174.     Local $RECT = DllStructCreate("int;int;int;int")
  175.     If @error Then Return SetError(-1,-1,0)
  176.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  177.     Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETRECT, "int", $i_part, "ptr", DllStructGetPtr($RECT))
  178.     If IsArray($a_ret) Then
  179.         If (Not $a_ret[0]) Then
  180.             $RECT = 0
  181.             Return SetError(-1,-1,0)
  182.         Else
  183.             Local $a_rect[4], $x
  184.             For $x = 0 To 3
  185.                 $a_rect[$x] = DllStructGetData($RECT, $x + 1)
  186.             Next
  187.             $RECT = 0
  188.             Return $a_rect
  189.         EndIf
  190.     Else
  191.         $RECT = 0
  192.         Return SetError(-1,-1,0)
  193.     EndIf
  194. EndFunc   ;==>_GUICtrlStatusBarGetRect
  195.  
  196. ;===============================================================================
  197. ;
  198. ; Description:       _GUICtrlStatusBarGetText
  199. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  200. ;                    $i_Panel        -    The panel to retreive the text from
  201. ; Requirement:
  202. ; Return Value(s):   Text from panel
  203. ; User CallTip:      _GUICtrlStatusBarGetText($h_StatusBar[,$i_Panel=0]) Gets Statusbar Text from a part. (required: <GuiStatusBar.au3>)
  204. ; Author(s):         tonedef, gafrost (Gary Frost (custompcs at charter dot net)), Steve Podhajecki <gehossafats@netmdc.com>
  205. ; Note(s):
  206. ;===============================================================================
  207. Func _GUICtrlStatusBarGetText($h_StatusBar, $i_Panel = 0)
  208.     ;== there is a built in function to use for this. See help documentation
  209.     Local $v_Ret
  210.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  211.     $v_Ret = DllCall("user32.dll", "long", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETTEXT, "int", $i_Panel, "strptr", "")
  212.     If IsArray($v_Ret) Then
  213.         Return $v_Ret[4]
  214.     Else
  215.         Return SetError(-1,-1,"")
  216.     EndIf
  217. EndFunc   ;==>_GUICtrlStatusBarGetText
  218.  
  219. ;===============================================================================
  220. ;
  221. ; Description:       _GUICtrlStatusBarGetTextLength
  222. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  223. ;                    $i_Panel        -    Nubmer of the panel to retrieve length from
  224. ;
  225. ; Requirement:
  226. ; Return Value(s):   Text Length
  227. ; User CallTip:      _GUICtrlStatusBarGetTextLength ($h_StatusBar, $i_Panel) Retrieves the length, in characters, of the text from the specified part of a status window. (required: <GuiStatusBar.au3>)
  228. ; Author(s):         Steve Podhajecki <gehossafats@netmdc.com>, gafrost (Gary Frost (custompcs at charter dot net))
  229. ; Note(s):
  230. ;===============================================================================
  231. Func _GUICtrlStatusBarGetTextLength($h_StatusBar, $i_Panel)
  232.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  233.     Local $ret = DllCall("user32.dll", "long", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETTEXTLENGTH, "int", $i_Panel, "int", 0)
  234.     If IsArray($ret) Then
  235.         Return $ret[0]
  236.     Else
  237.         Return SetError(-1,-1,-1)
  238.     EndIf
  239. EndFunc   ;==>_GUICtrlStatusBarGetTextLength
  240.  
  241. ;===============================================================================
  242. ;
  243. ; Description:       _GUICtrlStatusBarGetTip
  244. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  245. ;                    $i_Panel            -    The panel to retreive the text from
  246. ; Requirement:
  247. ; Return Value(s):   Tip Text, on error empty string and @error is set to 1
  248. ; User CallTip:      _GUICtrlStatusBarGetTip($h_StatusBar[, $i_Panel=0]) Gets Statusbar TipText. (required: <GuiStatusBar.au3>)
  249. ; Author(s):         Steve Podhajecki <gehossafats@netmdc.com>, , gafrost (Gary Frost (custompcs at charter dot net))
  250. ; Note(s):           The status bar must be created with the $SBT_TOOLTIPS style to enable ToolTips.
  251. ;===============================================================================
  252. Func _GUICtrlStatusBarGetTip($h_StatusBar, $i_Panel = 0)
  253.     Local $v_Ret, $strBuff, $wParam
  254.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  255.     $strBuff = DllStructCreate("char[255]")
  256.     $wParam = ((DllStructGetSize($strBuff) * 0x10000) + $i_Panel)
  257.     $v_Ret = DllCall("user32.dll", "long", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETTIPTEXT, _
  258.             "long", $wParam, "ptr", DllStructGetPtr($strBuff))
  259.     If IsArray($v_Ret) Then
  260.         Return StringStripWS(DllStructGetData($strBuff, 1), 7);strip leading, trailing, and double ws.
  261.     Else
  262.         Return SetError(1,1,"")
  263.     EndIf
  264. EndFunc   ;==>_GUICtrlStatusBarGetTip
  265.  
  266. ;===============================================================================
  267. ;
  268. ; Description:       _GUICtrlStatusBarGetUnicode
  269. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  270. ;
  271. ; Requirement:
  272. ; Return Value(s):   If this value is nonzero, the control is using Unicode characters.
  273. ;                    If this value is zero, the control is using ANSI characters
  274. ; User CallTip:      _GUICtrlStatusBarGetUnicode ($h_StatusBar) Retrieves the Unicode character format flag for the control. (required: <GuiStatusBar.au3>)
  275. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  276. ; Note(s):
  277. ;===============================================================================
  278. Func _GUICtrlStatusBarGetUnicode($h_StatusBar)
  279.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  280.     Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_GETUNICODEFORMAT, "int", 0, "int", 0)
  281.     If IsArray($a_ret) Then
  282.         Return $a_ret[0]
  283.     Else
  284.         Return SetError(-1,-1,0)
  285.     EndIf
  286. EndFunc   ;==>_GUICtrlStatusBarGetUnicode
  287.  
  288. ;===============================================================================
  289. ;
  290. ; Description:       _GUICtrlStatusBarResize
  291. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  292. ;
  293. ; Requirement:
  294. ; Return Value(s):   If the function succeeds, the return value is nonzero, otherwise zero.
  295. ; User CallTip:      _GUICtrlStatusBarResize($h_StatusBar)    Resize Statusbar. (required: <GuiStatusBar.au3>)
  296. ; Author(s):         Steve Podhajecki <gehossafats@netmdc.com>
  297. ; Note(s):
  298. ;===============================================================================
  299. Func _GUICtrlStatusBarResize($h_StatusBar)
  300.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  301.     Local $ret = DllCall("user32.dll", "int", "MoveWindow", "hwnd", $h_StatusBar, "int", 0, "int", 0, "int", 0, "int", 0)
  302.     If IsArray($ret) Then
  303.         Return $ret[0]
  304.     Else
  305.         Return SetError(-1,-1,0)
  306.     EndIf
  307. EndFunc   ;==>_GUICtrlStatusBarResize
  308.  
  309. ;===============================================================================
  310. ;
  311. ; Description:       _GUICtrlStatusBarSetBKColor
  312. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  313. ;                    $v_HexRGB       -    Hex RGB color to set Status Bar background
  314. ; Requirement:
  315. ; Return Value(s):   Returns the previous background color or zero upon failure
  316. ; User CallTip:      _GUICtrlStatusBarSetBKColor($h_StatusBar, $v_HexRGB) Sets the background color in a status bar. (required: <GuiStatusBar.au3>)
  317. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  318. ; Note(s):
  319. ;===============================================================================
  320. Func _GUICtrlStatusBarSetBKColor($h_StatusBar, $v_HexRGB)
  321.     Local $tc = Hex(String($v_HexRGB), 6)
  322.     Local $ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETBKCOLOR, "int", 0, "int", '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2))
  323.     If IsArray($ret) Then
  324.         $tc = Hex(String($ret[0]), 6)
  325.         Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  326.     Else
  327.         Return SetError(-1,-1,0)
  328.     EndIf
  329. EndFunc   ;==>_GUICtrlStatusBarSetBKColor
  330.  
  331. ;===============================================================================
  332. ;
  333. ; Description:       _GUICtrlStatusBarSetIcon
  334. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  335. ;                    $i_part         -    Nubmer of panel to add icon too
  336. ;                    $s_IconFile     -    file to extract icon from
  337. ;                    $i_iconID       -    id of the icon
  338. ; Requirement:
  339. ; Return Value(s):   Returns nonzero if successful, or zero otherwise.
  340. ; User CallTip:      _GUICtrlStatusBarSetIcon($StatusBar, $i_part, $szIconFile, $iconID) Sets an Icon in the Panel. (required: <GuiStatusBar.au3>)
  341. ; Author(s):         gafrost (Gary Frost ([email="custompcs at charter dot net"]custompcs at charter dot net[/email]))
  342. ; Note(s):    To remove the icon from a panel use -1 for $i_iconID
  343. ;       If using simple status bar then set $i_part to 255
  344. ;===============================================================================
  345. Func _GUICtrlStatusBarSetIcon($h_StatusBar, $i_part, $s_IconFile, $i_iconID)
  346.     Local $hIcon, $result
  347.     If $i_part = 255 Then $i_part = -1
  348.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  349.     If $i_iconID = -1 Then
  350.         $result = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETICON, "int", $i_part, "hwnd", $i_iconID)
  351.         If IsArray($result) Then 
  352.             Return $result
  353.         Else
  354.             Return SetError(-1,-1,0)
  355.         EndIf
  356.     Else
  357.         $hIcon = DllStructCreate("int")
  358.         $result = DllCall("shell32.dll", "int", "ExtractIconEx", "str", $s_IconFile, "int", $i_iconID, "hwnd", 0, "ptr", DllStructGetPtr($hIcon), "int", 1)
  359.         $result = $result[0]
  360.         If $result > 0 Then
  361.             $result = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETICON, "int", $i_part, "hwnd", DllStructGetData($hIcon, 1))
  362.         EndIf
  363.         DllCall("user32.dll", "int", "DestroyIcon", "hwnd", DllStructGetPtr($hIcon))
  364.         $hIcon = 0
  365.         If IsArray($result) Then 
  366.             Return $result
  367.         Else
  368.             Return SetError(-1,-1,0)
  369.         EndIf
  370.     EndIf
  371. EndFunc   ;==>_GUICtrlStatusBarSetIcon
  372.  
  373. ;===============================================================================
  374. ;
  375. ; Description:       _GUICtrlStatusBarSetMinHeight
  376. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  377. ;                    $i_MinHeight    -    Minimum height, in pixels, of the window
  378. ; Requirement:
  379. ; Return Value(s):   None
  380. ; User CallTip:      _GUICtrlStatusBarSetMinHeight($h_StatusBar, $i_MinHeight) Sets the minimum height of a status window's drawing area. (required: <GuiStatusBar.au3>)
  381. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  382. ; Note(s):
  383. ;===============================================================================
  384. Func _GUICtrlStatusBarSetMinHeight($h_StatusBar, $i_MinHeight)
  385.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  386.     DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETMINHEIGHT, "int", $i_MinHeight, "int", 0)
  387.     _GUICtrlStatusBarResize($h_StatusBar)
  388. EndFunc   ;==>_GUICtrlStatusBarSetMinHeight
  389.  
  390. ;===============================================================================
  391. ;
  392. ; Description:       _GUICtrlStatusBarSetSimple
  393. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  394. ;                    $b_Simple       -    Display type flag.
  395. ;                        If this parameter is TRUE, the window displays simple text. (Default)
  396. ;                        If it is FALSE, it displays multiple parts
  397. ; Requirement:
  398. ; Return Value(s):   None
  399. ; User CallTip:      _GUICtrlStatusBarSetSimple($h_StatusBar[, $b_Simple = True]) Specifies whether a status window displays simple text or displays all window parts. (required: <GuiStatusBar.au3>)
  400. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  401. ; Note(s):
  402. ;===============================================================================
  403. Func _GUICtrlStatusBarSetSimple($h_StatusBar, $b_Simple = True)
  404.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  405.     DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SIMPLE, "int", $b_Simple, "int", 0)
  406. EndFunc   ;==>_GUICtrlStatusBarSetSimple
  407.  
  408. ;===============================================================================
  409. ;
  410. ; Description:       _GUICtrlStatusBarSetText
  411. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  412. ;                    $s_Data         -    The text to display in the panel
  413. ;                    $i_Panel        -    The panel to hold the text (Default: 0)
  414. ; Requirement:
  415. ; Return Value(s):   Returns TRUE if successful, or FALSE otherwise.
  416. ; User CallTip:      _GUICtrlStatusBarSetText($h_StatusBar[, $s_Data = ""[, $i_Panel = 0]]) Sets the text in the specified part of a status window. (required: <GuiStatusBar.au3>)
  417. ; Author(s):         rysiora, JdeB, tonedef,
  418. ;                    gafrost (Gary Frost (custompcs at charter dot net))
  419. ; Note(s):           Set $i_Panel to 255 for simple statusbar
  420. ;===============================================================================
  421. Func _GUICtrlStatusBarSetText($h_StatusBar, $s_Data = "", $i_Panel = 0)
  422.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  423.     Local $ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETTEXT, "int", $i_Panel, "str", $s_Data)
  424.     If IsArray($ret) Then
  425.         Return $ret[0]
  426.     Else
  427.         Return SetError(1,1,False)
  428.     EndIf
  429. EndFunc   ;==>_GUICtrlStatusBarSetText
  430.  
  431. ;===============================================================================
  432. ;
  433. ; Description:       _GUICtrlStatusBarSetTip
  434. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  435. ;                    $i_part         -    Zero-based index of the part that will receive the ToolTip text
  436. ;                    $s_ToolTip      -    new ToolTip text
  437. ; Requirement:
  438. ; Return Value(s):   None
  439. ; User CallTip:      _GUICtrlStatusBarSetTip($h_StatusBar, $i_part, $s_ToolTip) Sets the ToolTip text for a part in a status bar. (required: <GuiStatusBar.au3>)
  440. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  441. ; Note(s):
  442. ;===============================================================================
  443. Func _GUICtrlStatusBarSetTip($h_StatusBar, $i_part, $s_ToolTip)
  444.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  445.     Local $struct = DllStructCreate("char[" & StringLen($s_ToolTip) + 1 & "]")
  446.     DllStructSetData($struct, 1, $s_ToolTip)
  447.     If @error Then Return SetError(@error,@error,0)
  448.     DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETTIPTEXT, "int", $i_part, "int", DllStructGetPtr($struct))
  449.     $struct = 0
  450. EndFunc   ;==>_GUICtrlStatusBarSetTip
  451.  
  452. ;===============================================================================
  453. ;
  454. ; Description:       _GUICtrlStatusBarSetUnicode
  455. ; Parameter(s):      $h_StatusBar    -    Handle to statusbar
  456. ;                    $b_Unicode        -    Determines the character set that is used by the control.
  457. ;                        If this value is TRUE, the control will use Unicode characters. (Default)
  458. ;                        If this value is FALSE, the control will use ANSI characters.
  459. ; Requirement:
  460. ; Return Value(s):   Returns the previous Unicode format flag for the control
  461. ; User CallTip:      _GUICtrlStatusBarSetUnicode($h_StatusBar[, $b_Unicode = True[) Sets the Unicode character format flag for the control. (required: <GuiStatusBar.au3>)
  462. ; Author(s):         gafrost (Gary Frost (custompcs at charter dot net))
  463. ; Note(s):
  464. ;===============================================================================
  465. Func _GUICtrlStatusBarSetUnicode($h_StatusBar, $b_Unicode = True)
  466.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  467.     Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETUNICODEFORMAT, "int", $b_Unicode, "int", 0)
  468.     If IsArray($a_ret) Then
  469.         Return $a_ret[0]
  470.     Else
  471.         Return SetError(1,1,False)
  472.     EndIf
  473. EndFunc   ;==>_GUICtrlStatusBarSetUnicode
  474.  
  475. ;===============================================================================
  476. ; Helper functions
  477. ;===============================================================================
  478. ;===============================================================================
  479. ;
  480. ; Description:       _GUICtrlStatusBarSetParts
  481. ; Parameter(s):      $h_StatusBar    -    The Control Id (will be converted to hWnd)
  482. ;                    $i_Panels        -    Nubmer of panesl to create
  483. ;                    $i_PanelWidth    -     width of panel(s) (Default: 100)
  484. ;
  485. ; Requirement:
  486. ; Return Value(s):   1 if successfull, otherwise zero
  487. ; User CallTip:      _GUICtrlStatusBarSetParts ($h_StatusBar, $i_Panels[, $i_PanelWidth = 100]). (required: <GuiStatusBar.au3>)
  488. ; Author(s):         tonedef, gafrost (Gary Frost (custompcs at charter dot net)), Steve Podhajecki <gehossafats at netmdc dot com>
  489. ; Note(s):
  490. ;===============================================================================
  491. Func _GUICtrlStatusBarSetParts($h_StatusBar, $i_Panels, $a_PanelWidth = 100)
  492.     Local $sta
  493. ;~     , $emsg[6]
  494.     If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
  495.     ;=== Set each panel to be same size and assign the last one the remainder
  496.     If Not IsArray($a_PanelWidth) Then
  497.         Local $a_PanelWidth[$i_Panels], $panel, $size
  498.         $size = WinGetClientSize("")
  499.         For $panel = 0 To $i_Panels - 1
  500.             $a_PanelWidth[$panel] = Int(($size[0] / $i_Panels) * $panel + 1)
  501.         Next
  502.         $a_PanelWidth[$i_Panels - 1] = -1
  503.     EndIf
  504.     ;== end set sizing
  505.     
  506.     $sta = _CreateStuctFromArray($a_PanelWidth, "int")
  507.     If @error Then Return SetError(1,1,0)
  508.     
  509. ;~     $emsg[0] = "No error."
  510. ;~     $emsg[1] = "Unable to use the DLL file."
  511. ;~     $emsg[2] = ' unknown "return type".'
  512.     
  513.     DllCall("user32.dll", "long", "SendMessage", "hwnd", $h_StatusBar, "int", $SB_SETPARTS, "int", $i_Panels, "ptr", DllStructGetPtr($sta))
  514.     If @error Then Return SetError(1,1,0)
  515.     ;== Sometimes this needs to be called in order to update the status bar.
  516.     _GUICtrlStatusBarResize($h_StatusBar)
  517.     $sta = ""
  518.     Return 1
  519. EndFunc   ;==>_GUICtrlStatusBarSetParts
  520.  
  521. ;===============================================================================
  522. ;
  523. ; Description:       CreateStructFromArray
  524. ; Parameter(s):      $a_Variable array to create struct with
  525. ;                    $structType, the SINGLE type of struct to create.
  526. ; Requirement:
  527. ; Return Value(s):
  528. ; User CallTip:      _CreateStructFromArray
  529. ; Author(s):            Steve Podhajecki <gehossafats at netmdc dot com>
  530. ; Note(s):
  531. ;===============================================================================
  532. Func _CreateStuctFromArray($a_Variable, $structType)
  533.     If Not IsArray($a_Variable) Then Return SetError(1,1,0)
  534.     Local $a_ctr, $strVar, $struct
  535. ;~     , $emsg[6]
  536.     For $a_ctr = 0 To UBound($a_Variable) - 1
  537.         $strVar &= $structType & ";"
  538.     Next
  539.     $strVar = StringTrimRight($strVar, 1)
  540. ;~     $emsg[0] = "No Error."
  541. ;~     $emsg[1] = "Variable passed to DllStructCreate was not a string."
  542. ;~     $emsg[2] = "There is an unknown Data Type in the string passed. "
  543. ;~     $emsg[3] = "Failed to allocate the memory needed for the struct, or Pointer = 0."
  544. ;~     $emsg[4] = "Error allocating memory for the passed string."
  545. ;~     $emsg[5] = ""
  546.     
  547.     $struct = DllStructCreate($strVar)
  548.     If @error Then Return SetError(1,1,0)
  549.     
  550. ;~     $emsg[0] = 'No Error. '
  551. ;~     $emsg[1] = 'Struct not a correct struct returned by DllStructCreate.'
  552. ;~     $emsg[2] = 'Element value out of range. '
  553. ;~     $emsg[3] = 'index would be outside of the struct.'
  554. ;~     $emsg[4] = 'Element data type is unknown'
  555. ;~     $emsg[5] = 'index < 0.'
  556.     For $a_ctr = 0 To UBound($a_Variable) - 1
  557.         DllStructSetData($struct, ($a_ctr) + 1, $a_Variable[$a_ctr])
  558.         If @error Then Return SetError(1,1,0)
  559.     Next
  560.     Return $struct
  561. EndFunc   ;==>_CreateStuctFromArray
  562.